package cn.tedu.csmall.passport.mapper;

import cn.tedu.csmall.passport.pojo.entity.Admin;
import cn.tedu.csmall.passport.pojo.vo.AdminListItemVO;
import cn.tedu.csmall.passport.pojo.vo.AdminLoginInfoVO;
import cn.tedu.csmall.passport.pojo.vo.AdminStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * ClassName: AdminMapper
 * Package: cn.tedu.csmall.passport.mapper
 * Description
 *
 * @version 0.0.1
 * @Author: 大傻
 * @Create:2022/12/8
 */
@Repository
public interface AdminMapper {
    /**
     *
     * @param admin 添加管理员
     * @return 添加成功返回的数量
     */
    int insert(Admin admin);

    /**
     *
     * @param admins 添加多个管理员
     * @return 添加成功的数据
     */
    int  insertBatch(List<Admin> admins);

    /**
     * 根据id删除对应的数据
     * @param id
     * @return 删除影响行数
     */
    int deleteById(Long id);

    /**
     *
     * @param id 根据id 删除多个 管理员
     * @return 删除成功的行数
     */
    int deleteBatch(Long[] id);
    /**
     *
     * @param id 根据id修改登录次数合
     * @return 修改成功数量
     */
    int updateByLoginCount(Long id);

    /**
     *
     * @param admin 根据id修改内容,admin封装的新内容
     * @return 修改成功数量
     */
    int update(Admin admin);
    /**
     *
     * @return 统计表中数据 返回统计到的结果
     */
    int count();


    /**
     *
     * @param userName 根据用户名查数据
     * @return 返回查到的数据量
     */
    int countByUserName(String userName);

    /**
     *
     * @param phone  根据手机号查数据
     * @return 返回查到的数据量
     */
    int countByPhone(String phone);

    /**
     *
     * @param email 根据邮箱查询数据
     * @return 返回查到的数据量
     */
    int countByEmail(String email);

    /**
     *根据用户名查询用户的登录信息
     * @param username 用户名
     * @return  查询到的结果
     */
    AdminLoginInfoVO getLoginInfoByUsername( String username);
    /**
     * 根据id查询 管理员详情
     * @param id
     * @return 匹配的管理员详情，如果没有匹配的数据，则返回null
     */
    AdminStandardVO getStandardById(Long id);
    /**
     *
     * @return 返回查询到的数据集合
     */
    List<AdminListItemVO> list();
}
